#单例模式
class MySingleton:
  __obj = None
  __init_flag = True

  def __new__(obj, *args, **kwargs):
    if obj.__obj == None:
      obj.__obj = object.__new__(obj)

    return obj.__obj

  def __init__(self,name):
    if MySingleton.__init_flag:
      print("init....")
      self.name = name
      MySingleton.__init_flag = False

a = MySingleton("aa")
print(a)
b = MySingleton("bb")
print(b)

# new 方法
# 调用时机：在对象创建阶段调用
# 调用顺序：在 init 方法之前执行
# 主要职责：负责创建并返回类的新实例
# 在单例模式中：控制是创建新实例还是返回已存在的实例

# init 方法
# 调用时机：在 new 方法成功返回实例之后调用
# 调用频率：每次调用类构造器时都会执行
# 主要职责：初始化新创建的实例
# 在当前单例实现中：虽然每次都会调用，但通过 __init_flag 确保实际初始化逻辑只执行一次